﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using negocios;
using objetos;
using publico;
using System.Data;
using System.Transactions;
using System.Text;

namespace softsales.pagina.ordem_servico
{



    public partial class ordem_servico_incluir : System.Web.UI.Page
    {
        // ORDEM SERVICO
        OBJ_TB_ORDEM_SERVICO o_tb_ordem_servico = new OBJ_TB_ORDEM_SERVICO();
        BLL_TB_ORDEM_SERVICO b_tb_ordem_servico = new BLL_TB_ORDEM_SERVICO();

        // ORDEM SERVICO ITEM
        OBJ_TB_ORDEM_SERVICO_ITEM o_tb_ordem_servico_item = new OBJ_TB_ORDEM_SERVICO_ITEM();
        BLL_TB_ORDEM_SERVICO_ITEM b_tb_ordem_servico_item = new BLL_TB_ORDEM_SERVICO_ITEM();

        // EMPRESA
        OBJ_TB_EMPRESA o_tb_empresa = new OBJ_TB_EMPRESA();
        BLL_TB_EMPRESA b_tb_empresa = new BLL_TB_EMPRESA();


        BLL_TB_TIPO_ORDEM_SERVICO b_tb_tipo_ordem_servico = new BLL_TB_TIPO_ORDEM_SERVICO();
        BLL_TB_TIPO_SITUACAO_ORDEM_SERVICO b_tb_tipo_situacao_ordem_servico = new BLL_TB_TIPO_SITUACAO_ORDEM_SERVICO();

        BLL_TB_ORDEM_SERVICO_HISTORICO b_tb_ordem_servico_historico = new BLL_TB_ORDEM_SERVICO_HISTORICO();
        OBJ_TB_ORDEM_SERVICO_HISTORICO o_tb_ordem_servico_historico = new OBJ_TB_ORDEM_SERVICO_HISTORICO();

        // PRODUTO
        OBJ_TB_PRODUTO o_tb_produto = new OBJ_TB_PRODUTO();
        BLL_TB_PRODUTO b_tb_produto = new BLL_TB_PRODUTO();

        // CADASTRO
        OBJ_TB_CADASTRO o_tb_cadastro = new OBJ_TB_CADASTRO();
        BLL_TB_CADASTRO b_tb_cadastro = new BLL_TB_CADASTRO();

        BLL_TB_FORMA_PAGAMENTO b_tb_forma_pagamento = new BLL_TB_FORMA_PAGAMENTO();
        BLL_TB_CONDICAO_PAGAMENTO b_tb_condicao_pagamento = new BLL_TB_CONDICAO_PAGAMENTO();

        // LOG ERRO
        BLL_TB_LOG_ERRO b_tb_log_erro = new BLL_TB_LOG_ERRO();
             

        protected void Page_Load(object sender, EventArgs e)
        {

            if (PUB_SESSAO.Logado())
            {
                

                if (!IsPostBack)
                {
                    TituloPagina();

                    Session.Remove("dt_ordem_servico_item");
                    b_tb_empresa.PreencheControleWeb(DDL_ID_EMPRESA, true);
                    b_tb_tipo_situacao_ordem_servico.PreencheControle(DDL_ID_SITUACAO_ORDEM_SERVICO, true);
                    b_tb_tipo_ordem_servico.PreencheControle(DDL_ID_TIPO_ORDEM_SERVICO, true);
                    b_tb_forma_pagamento.PreencheControle(DDL_ID_FORMA_PAGAMENTO, true);
                    b_tb_condicao_pagamento.PreencheControleWeb(DDL_ID_CONDICAO_PAGAMENTO, true);


                    // INICIALIZA CAMPO DT EMISSAO COM A DATA ATUAL
                    TXT_DT_EMISSAO.Text = DateTime.Now.ToShortDateString();

                    TAB_CONTAINER.ActiveTab = TAB_ORDEM_SERVICO;

                    // INCLUI O TITULO NA PAGINA
    
                    // PAINEL INICIAL DE ITEM OCULTO                                 
                    int aberto = (int)PUB_ENUM.TIPO_SITUACAO_ORDEM_SERVICO.ABERTO;
                    DDL_ID_SITUACAO_ORDEM_SERVICO.SelectedValue = aberto.ToString();
                    DDL_ID_SITUACAO_ORDEM_SERVICO.Enabled = false;

                    DDL_ID_FORMA_PAGAMENTO.SelectedValue = string.Format("{0}", (int)PUB_ENUM.FORMA_PAGAMENTO.AVISTA);
                    DDL_ID_CONDICAO_PAGAMENTO.SelectedValue = string.Format("{0}", (int)PUB_ENUM.CONDICAO_PAGAMENTO.DINHEIRO);


                    TXT_VALOR_DESCONTO.Text = "0,00";
                    TXT_VALOR_OUTRO.Text = "0,00";
                    TXT_VALOR_TOTAL_DESCONTO.Text = "0,00";
                    TXT_VALOR_TOTAL_ITEM.Text = "0,00";
                    TXT_VALOR_TOTAL_ORDEM_SERVICO.Text = "0,00";
                    TXT_VALOR_TOTAL_OUTRO.Text = "0,00";
                    TXT_VALOR_TOTAL_PRODUTO.Text = "0,00";
                    TXT_VALOR_TOTAL_SERVICO.Text = "0,00";
                    TXT_VALOR_UNITARIO.Text = "0,00";
                    TXT_QTD.Text = "1";


                }
                else
                {

                    // RECEBE O ID_CADASTRO DA MODAL CADASTRO
                    if (Session["id_cadastro"] != null)
                    {
                        int id_cadastro = Convert.ToInt32(Session["id_cadastro"].ToString());

                        o_tb_cadastro = b_tb_cadastro.SelecionarObjetoPorId(id_cadastro);
                        TXT_ID_CLI_FOR.Text = id_cadastro.ToString();
                        TXT_NOME_CLI_FOR.Text = o_tb_cadastro.nome.ToString();

                        Session.Remove("id_cadastro");
                    }
                    if (Session["id_produto"] != null)
                    {

                        int id_produto = Convert.ToInt32(Session["id_produto"].ToString());
                        o_tb_produto = b_tb_produto.SelecionarObjetoPorId(id_produto);

                        TXT_ID_PRODUTO_SERVICO.Text = o_tb_produto.id.ToString();
                        TXT_DESCRICAO.Text = o_tb_produto.descricao.ToString();
                        TXT_QTD.Text = "1";
                        TXT_VALOR_UNITARIO.Text = PUB_FUNCOES.FormataNumerico(o_tb_produto.valor_venda.ToString());
                        TXT_VALOR_TOTAL_ITEM.Text = PUB_FUNCOES.FormataNumerico(o_tb_produto.valor_venda.ToString());

                        TXT_QTD.Enabled = true;
                        TXT_VALOR_UNITARIO.Enabled = true;
                        TXT_VALOR_DESCONTO.Enabled = true;
                        TXT_VALOR_OUTRO.Enabled = true;
                        TXT_VALOR_TOTAL_ITEM.Enabled = true;
                        Session.Remove("id_produto");
                    }


                    if (GRV_TB_ORDEM_SERVICO_ITEM.Rows.Count > 0)
                    {

                        PNL_ORDEM_SERVICO_ITEM.Visible = true;
                    }
                    else
                    {
                        PNL_ORDEM_SERVICO_ITEM.Visible = false;
                    }


                }
            }

        }

        private void TituloPagina()
        {

            LBL_TITULO_PAGINA.Text = string.Format("Ordem Serviço Nº {0}", HF_ID.Value);
        }



        protected void BTN_CANCELAR_Click(object sender, EventArgs e)
        {
            Response.Redirect("default.aspx", false);
        }

        protected void BTN_SALVAR_Click(object sender, EventArgs e)
        {
            string msg = string.Empty;
            try
            {

                using (TransactionScope scope = new TransactionScope())
                {
                    // Inclui dados da ordem de servico
                     IncluirOrdemServico();

                    // Inclui os items da tabela temporaria
                    //foreach (DataRow dr in b_tb_ordem_servico_item.Dt_ordem_servico_item.Rows)
                    //{
                    //    o_tb_ordem_servico_item = new OBJ_TB_ORDEM_SERVICO_ITEM();
                    //    o_tb_ordem_servico_item.id_ordem_servico = Convert.ToInt32(HF_ID.Value);
                    //    o_tb_ordem_servico_item.id_produto_servico = Convert.ToInt32(dr["id_produto_servico"].ToString());
                    //    o_tb_ordem_servico_item.id_tipo_item = Convert.ToInt32(dr["id_tipo_item"].ToString());
                    //    o_tb_ordem_servico_item.ean = dr["ean"] == DBNull.Value ? (int?)null : Convert.ToInt32(dr["ean"].ToString());
                    //    o_tb_ordem_servico_item.descricao = dr["descricao"].ToString();
                    //    o_tb_ordem_servico_item.id_unidade_medida = Convert.ToInt32(dr["id_unidade_medida"].ToString());
                    //    o_tb_ordem_servico_item.qtd = Convert.ToDecimal(dr["qtd"].ToString());
                    //    o_tb_ordem_servico_item.valor_unitario = Convert.ToDecimal(dr["valor_unitario"].ToString());
                    //    o_tb_ordem_servico_item.valor_total = Convert.ToDecimal(dr["valor_total"].ToString());
                    //    o_tb_ordem_servico_item.valor_desconto = Convert.ToDecimal(dr["valor_desconto"].ToString());
                    //    o_tb_ordem_servico_item.valor_outro = Convert.ToDecimal(dr["valor_outro"].ToString());
                    //    b_tb_ordem_servico_item.Incluir(o_tb_ordem_servico_item);
                    //}

                    IncluirOrdemServicoHistorico(string.Format("Login {0} criou a Ordem de Serviço Nº {1}", PUB_SESSAO.Login, HF_ID.Value));


                    msg = "Ordem de Serviço Nº " + HF_ID.Value + " foi criado com sucesso";
                    Master.MSG_ALERTA(msg, string.Format("ordem_servico_visualizar.aspx?id={0} ", HF_ID.Value), false);

                    // remove a sessao da grid
                    // Session.Remove("dt_ordem_servico_item");

                    scope.Complete();

                }
                
               
              

            }
            catch (Exception ex)
            {
                b_tb_log_erro.IncluirLogErro(ex);
                Master.MSG_ALERTA("Erro ao tentar salvar a ordem de serviço.");
                
            }
            

        }



        private void IncluirOrdemServicoHistorico(String historico)
        {
            // HISTORICO DA ORDEM DE SERVICO
            o_tb_ordem_servico_historico.desc_ordem_servico_historico = historico.ToString();
            o_tb_ordem_servico_historico.dt_atualizacao = DateTime.Now;
            o_tb_ordem_servico_historico.id_ordem_servico = Convert.ToInt32(HF_ID.Value);
            o_tb_ordem_servico_historico.id_usuario = PUB_SESSAO.Id;
            b_tb_ordem_servico_historico.Incluir(o_tb_ordem_servico_historico);
        }
        
        
        protected void BTN_INCLUIR_ITEM_Click(object sender, EventArgs e)
        {
            try
            {

                if (TXT_ID_PRODUTO_SERVICO.Text != string.Empty && TXT_VALOR_UNITARIO.Text != string.Empty && TXT_VALOR_TOTAL_ITEM.Text != string.Empty && TXT_QTD.Text != string.Empty && DDL_ID_CONDICAO_PAGAMENTO.SelectedValue != string.Empty && DDL_ID_FORMA_PAGAMENTO.SelectedValue != string.Empty  && DDL_ID_EMPRESA.SelectedValue != string.Empty && DDL_ID_TIPO_ORDEM_SERVICO.SelectedValue != string.Empty)
                {

                    


                    using (TransactionScope scope = new TransactionScope())
                    {
                        if (HF_ID.Value == string.Empty)
                        {
                           HF_ID.Value = IncluirOrdemServico().ToString();

                        }
                        if (!b_tb_ordem_servico_item.ExisteItem(Convert.ToInt32(HF_ID.Value), Convert.ToInt32(TXT_ID_PRODUTO_SERVICO.Text)))
                        {
                            IncluirOrdemServicoItem();
                            PreencheOrdemServicoItem();
                            AtualizaTotalOrdemServico();
                            TotalOrdemServico();
                            PNL_ORDEM_SERVICO_ITEM.Visible = true;

                            TXT_ID_PRODUTO_SERVICO.Text = string.Empty;
                            TXT_DESCRICAO.Text = string.Empty;
                            TXT_VALOR_UNITARIO.Text = "0,00";
                            TXT_VALOR_OUTRO.Text = "0,00";
                            TXT_VALOR_DESCONTO.Text = "0,00";
                            TXT_VALOR_TOTAL_ITEM.Text = "0,00";
                            TXT_QTD.Text = "1";

                            TituloPagina();
                        }
                        else
                        {
                            Master.MSG_ALERTA("Item já foi incluído.");
                        }

                        scope.Complete();

                        scope.Dispose();
                        
                    }

                }


            }
            catch (Exception)
            {
                
                throw;
            }
        }

        private void AtualizaTotalOrdemServico()
        {
            // ATUALIZA O TOTAL DA ORDEM DE SERVICO
            b_tb_ordem_servico_item.AtualizaTotalOrdemServico(Convert.ToInt32(HF_ID.Value));

        }


       
        private int IncluirOrdemServico()
        {
            int id_ordem_servico = 0;
            try
            {
                o_tb_ordem_servico.id_empresa = Convert.ToInt32(DDL_ID_EMPRESA.SelectedValue);
                o_tb_ordem_servico.id_cadastro = Convert.ToInt32(TXT_ID_CLI_FOR.Text);
                if (TXT_DT_EMISSAO.Text != string.Empty)
                    o_tb_ordem_servico.dt_emissao = Convert.ToDateTime(TXT_DT_EMISSAO.Text);
                if (TXT_DT_ENTRADA.Text != string.Empty)
                    o_tb_ordem_servico.dt_entrada = Convert.ToDateTime(PUB_FUNCOES.TrataData(TXT_DT_ENTRADA.Text));
                if (TXT_DT_ENTREGA.Text != string.Empty)
                    o_tb_ordem_servico.dt_entrega = Convert.ToDateTime(PUB_FUNCOES.TrataData(TXT_DT_ENTREGA.Text));
                if (TXT_DT_APROVACAO.Text != string.Empty)
                    o_tb_ordem_servico.dt_aprovacao = Convert.ToDateTime(PUB_FUNCOES.TrataData(TXT_DT_APROVACAO.Text));
                if (TXT_DT_FECHAMENTO.Text != string.Empty)
                    o_tb_ordem_servico.dt_fechamento = Convert.ToDateTime(PUB_FUNCOES.TrataData(TXT_DT_FECHAMENTO.Text));

                if (TXT_DT_GARANTIA.Text != string.Empty)
                    o_tb_ordem_servico.dt_garantia = Convert.ToDateTime(PUB_FUNCOES.TrataData(TXT_DT_GARANTIA.Text));

                if (TXT_ID_OS_GARANTIA.Text != string.Empty)
                    o_tb_ordem_servico.id_os_garantia = Convert.ToInt32(PUB_FUNCOES.TrataInteiro(TXT_ID_OS_GARANTIA.Text));

                if (TXT_NUM_OS.Text != string.Empty)
                    o_tb_ordem_servico.id = Convert.ToInt32(TXT_NUM_OS.Text);                                

                if (TXT_PLACA.Text != string.Empty)
                    o_tb_ordem_servico.veiculo_placa = TXT_PLACA.Text;

                if (TXT_KM.Text != string.Empty)
                    o_tb_ordem_servico.veiculo_km = TXT_KM.Text;


                o_tb_ordem_servico.id_forma_pagamento = Convert.ToInt32(DDL_ID_FORMA_PAGAMENTO.SelectedValue);
                o_tb_ordem_servico.id_condicao_pagamento = Convert.ToInt32(DDL_ID_CONDICAO_PAGAMENTO.SelectedValue);
                o_tb_ordem_servico.id_usuario = PUB_SESSAO.Id;
                o_tb_ordem_servico.id_tipo_ordem_servico = Convert.ToInt32(DDL_ID_TIPO_ORDEM_SERVICO.SelectedValue);
                o_tb_ordem_servico.id_situacao_ordem_servico = Convert.ToInt32(DDL_ID_SITUACAO_ORDEM_SERVICO.SelectedValue);
                o_tb_ordem_servico.desc_servico = TXT_DESC_SERVICO.Text.Trim();
                o_tb_ordem_servico.valor_total_servico = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_SERVICO.Text));
                o_tb_ordem_servico.valor_total_produto = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_PRODUTO.Text));
                o_tb_ordem_servico.valor_total_desconto = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_DESCONTO.Text));
                o_tb_ordem_servico.valor_total_outro = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_OUTRO.Text));
                o_tb_ordem_servico.valor_total_ordem_servico = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_ORDEM_SERVICO.Text));
                o_tb_ordem_servico.id_usuario_checkin = null;
                o_tb_ordem_servico.dt_checkin = null;

                if (HF_ID.Value != string.Empty)
                {
                    o_tb_ordem_servico.id = Convert.ToInt32(HF_ID.Value);
                    b_tb_ordem_servico.Alterar(o_tb_ordem_servico);
                   
                }
                else
                {
                    id_ordem_servico = b_tb_ordem_servico.Incluir(o_tb_ordem_servico);
                    TXT_NUM_OS.Text = id_ordem_servico.ToString();
                }

                return id_ordem_servico;
            }
            catch (Exception)
            {
                
                throw;
            }
          



        }

    

        private void TotalOrdemServico()
        {
            o_tb_ordem_servico = b_tb_ordem_servico.SelecionarObjetoPorId(Convert.ToInt32(HF_ID.Value));

            TXT_VALOR_TOTAL_DESCONTO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_desconto.ToString());
            TXT_VALOR_TOTAL_ORDEM_SERVICO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_ordem_servico.ToString());
            TXT_VALOR_TOTAL_OUTRO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_outro.ToString());
            TXT_VALOR_TOTAL_PRODUTO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_produto.ToString());
            TXT_VALOR_TOTAL_SERVICO.Text = PUB_FUNCOES.FormataNumerico(o_tb_ordem_servico.valor_total_servico.ToString());

            //TXT_VALOR_TOTAL_DESCONTO.Text = PUB_FUNCOES.FormataNumerico(b_tb_ordem_servico_item.ValorTotalDesconto(b_tb_ordem_servico_item.Dt_ordem_servico_item).ToString());
            //TXT_VALOR_TOTAL_ORDEM_SERVICO.Text = PUB_FUNCOES.FormataNumerico(b_tb_ordem_servico_item.ValorTotalOrdemServico(b_tb_ordem_servico_item.Dt_ordem_servico_item).ToString());
            //TXT_VALOR_TOTAL_OUTRO.Text = PUB_FUNCOES.FormataNumerico(b_tb_ordem_servico_item.ValorTotalOutro(b_tb_ordem_servico_item.Dt_ordem_servico_item).ToString());            
            //TXT_VALOR_TOTAL_PRODUTO.Text = PUB_FUNCOES.FormataNumerico(b_tb_ordem_servico_item.ValorTotalProduto(b_tb_ordem_servico_item.Dt_ordem_servico_item).ToString());
            //TXT_VALOR_TOTAL_SERVICO.Text = PUB_FUNCOES.FormataNumerico(b_tb_ordem_servico_item.ValorTotalServico(b_tb_ordem_servico_item.Dt_ordem_servico_item).ToString());

        }

        private void IncluirOrdemServicoItem()
        {
            
            decimal vlr_unitario = 0;
            decimal vlr_desconto = 0;
            decimal vlr_outro = 0;
            decimal vlr_total_item = 0;
            decimal vlr_qtd = 0;
            try
            {
                o_tb_produto = b_tb_produto.SelecionarObjetoPorId(Convert.ToInt32(TXT_ID_PRODUTO_SERVICO.Text));

                if (TXT_QTD.Text != string.Empty)
                    vlr_qtd = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_QTD.Text));

                if (TXT_VALOR_TOTAL_ITEM.Text != string.Empty)
                    vlr_unitario = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_TOTAL_ITEM.Text));

                if (TXT_VALOR_OUTRO.Text != string.Empty)
                    vlr_outro = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_OUTRO.Text));

                if (TXT_VALOR_DESCONTO.Text != string.Empty)
                    vlr_desconto = Convert.ToDecimal(PUB_FUNCOES.TrataDecimal(TXT_VALOR_DESCONTO.Text));

                vlr_total_item = (vlr_unitario * vlr_qtd) + vlr_outro - vlr_desconto;


                // ORDEM SERVICO ITEM
                o_tb_ordem_servico_item.id_ordem_servico = Convert.ToInt32(HF_ID.Value);
                o_tb_ordem_servico_item.id_produto_servico = o_tb_produto.id;
                o_tb_ordem_servico_item.id_tipo_item = o_tb_produto.id;
                o_tb_ordem_servico_item.ean = o_tb_produto.ean;
                o_tb_ordem_servico_item.descricao = TXT_DESCRICAO.Text;
                o_tb_ordem_servico_item.id_unidade_medida = o_tb_produto.id_unidade_medida;
                o_tb_ordem_servico_item.qtd = vlr_qtd;
                o_tb_ordem_servico_item.valor_unitario = vlr_unitario;
                o_tb_ordem_servico_item.valor_desconto = vlr_desconto;
                o_tb_ordem_servico_item.valor_outro = vlr_outro;
                o_tb_ordem_servico_item.valor_total = vlr_total_item;

                b_tb_ordem_servico_item.Incluir(o_tb_ordem_servico_item);

                //b_tb_ordem_servico_item.PreencheDataTable(b_tb_ordem_servico_item.Dt_ordem_servico_item, o_tb_ordem_servico_item);
              
            }
            catch (Exception)
            {
                
                throw;
            }
          


        }

        protected void IMG_BTN_EXCLUIR_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                ImageButton btn = (ImageButton)sender;

                int id_ordem_servico_item = 0;
                if (btn != null)
                {
                    id_ordem_servico_item = Convert.ToInt32(btn.CommandArgument);
                    o_tb_ordem_servico_item = b_tb_ordem_servico_item.SelecionarObjetoPorId(id_ordem_servico_item);
                    b_tb_ordem_servico_item.Excluir(o_tb_ordem_servico_item);
                    //b_tb_ordem_servico_item.Dt_ordem_servico_item.Rows[id_ordem_servico_item].Delete();
                    //b_tb_ordem_servico_item.Dt_ordem_servico_item.AcceptChanges();
                    PreencheOrdemServicoItem();
                    
                    TotalOrdemServico();

                    Master.MSG_ALERTA("Item excluído com sucesso.");
                }
            }
            catch (Exception)
            {

                throw;
            }
        }

        //private void PreencheOrdemServicoItem()
        //{

        //    GRV_TB_ORDEM_SERVICO_ITEM.DataSource = b_tb_ordem_servico_item.Dt_ordem_servico_item;
        //    GRV_TB_ORDEM_SERVICO_ITEM.DataBind();
        //}

        private void PreencheOrdemServicoItem()
        {

            GRV_TB_ORDEM_SERVICO_ITEM.DataSource = b_tb_ordem_servico_item.Selecionar(string.Format("tb_ordem_servico_item.id_ordem_servico = {0}", HF_ID.Value),"");
            GRV_TB_ORDEM_SERVICO_ITEM.DataBind();
        }

        public void CarregaGrid()
        {

            DataSet ds = new DataSet();

            try
            {

                StringBuilder sb = new StringBuilder();


                List<string> lista = new List<string>();


                lista.Add(string.Format("tb_ordem_servico_item.id_ordem_servico={0}", HF_ID.Value));
                sb.Append(string.Join(" and ", lista.ToArray()));




                ds = b_tb_ordem_servico_item.Selecionar(sb.ToString(), PUB_PAGINACAO.Sort, PUB_PAGINACAO.PageIndex, PUB_PAGINACAO.PageSize);

                if (ds.Tables[0].Rows.Count > 0)
                {
                    GRV_TB_ORDEM_SERVICO_ITEM.DataSource = ds;
                    GRV_TB_ORDEM_SERVICO_ITEM.DataBind();
                    PUB_PAGINACAO.Paginacao(true);
                }
                else
                {
                    GRV_TB_ORDEM_SERVICO_ITEM.EmptyDataText = "Nenhum registro foi encontrado";
                    GRV_TB_ORDEM_SERVICO_ITEM.DataBind();
                }
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                ds.Dispose();
            }

        }

        protected void GRV_TB_ORDEM_SERVICO_ITEM_Sorting(object sender, GridViewSortEventArgs e)
        {

            PUB_PAGINACAO.Sort = e.SortExpression;
            if (PUB_PAGINACAO.SortDirection == SortDirection.Ascending)
            {
                PUB_PAGINACAO.SortDirection = SortDirection.Descending;
                PUB_PAGINACAO.Sort = PUB_PAGINACAO.Sort + " " + PUB_PAGINACAO.DESCENDENTE;
            }
            else
            {
                PUB_PAGINACAO.SortDirection = SortDirection.Ascending;
                PUB_PAGINACAO.Sort = PUB_PAGINACAO.Sort + "  " + PUB_PAGINACAO.ASCENDENTE;
            }

            CarregaGrid();


        }

        protected void GRV_TB_ORDEM_SERVICO_ITEM_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GRV_TB_ORDEM_SERVICO_ITEM.PageIndex = e.NewPageIndex;
            PUB_PAGINACAO.PageIndex = e.NewPageIndex;
            CarregaGrid();
        }

        protected void IMG_BTN_PESQUISAR_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = 0;
            CarregaGrid();
        }

        protected void IMG_BTN_PRIMEIRO_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = 0;
            CarregaGrid();
        }

        protected void IMG_BTN_ANTERIOR_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = PUB_PAGINACAO.PageIndex - 1;
            CarregaGrid();
        }

        protected void IMG_BTN_PROXIMO_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = PUB_PAGINACAO.PageIndex + 1;
            CarregaGrid();
        }

        protected void IMG_BTN_ULTIMO_Click(object sender, ImageClickEventArgs e)
        {
            PUB_PAGINACAO.PageIndex = PUB_PAGINACAO.TotalDePaginas - 1;
            CarregaGrid();
        }

        protected void DDL_ID_FORMA_PAGAMENTO_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (DDL_ID_FORMA_PAGAMENTO.SelectedValue != string.Empty)
            {
                b_tb_condicao_pagamento.PreencheControleWeb(DDL_ID_CONDICAO_PAGAMENTO, string.Format("tb_condicao_pagamento.id_forma_pagamento = {0}", DDL_ID_FORMA_PAGAMENTO.SelectedValue), "", false);
            }
            else
            {
                DDL_ID_CONDICAO_PAGAMENTO.SelectedValue = string.Empty;
            }
        }

    }

}